var express = require('express');
var router = express.Router();

var mongoose = require('mongoose');
var Goods = require('../models/goods');
var User = require('../models/user');

// 链接 MongoDB 数据库
mongoose.connect('mongodb://127.0.0.1:27017/dumall');

// 监听 数据库的链接
mongoose.connection.on('connected', function() {
  console.log("MongoDB success")
});

//链接失败
mongoose.connection.on('error', function() {
  console.log('MongoDB Error')
});

//链接失败
mongoose.connection.on('disconnected', function() {
  console.log('MongoDB dis 链接断开')
});

/* 查询商品列表*/
router.get('/list', function(req, res, next) {

  /*
    分页
  */
  let page = parseInt(req.query.page);
  let pageSize = parseInt(req.query.pageSize);
  let sort = req.query.sort; // 排序类型
  let skip = (page - 1) * pageSize; // 每页条数

  let priceLevel = req.query.priceLevel; // 根据价格过滤

  var priceGt = '',
    priceLte = ''; // 最小区间 和小于等于的区间
  let params = {}
  if (priceLevel != 'all') {
    switch (priceLevel) {
      case '0':
        priceGt = 0;
        priceLte = 100;
        break;
      case '1':
        priceGt = 100;
        priceLte = 500;
        break;
      case '2':
        priceGt = 500;
        priceLte = 1000;
        break;
      case '3':
        priceGt = 1000;
        priceLte = 5000;
        break;
    }
    params = {
      salePrice: {
        $gt: priceGt,
        $lte: priceLte
      }
    }
  }
  // console.log(params)
  /*
           skip 默认跳过跳过几条数据 每页条数
           limit 每页多少条
	   */
  let goodsModel = Goods.find(params).skip(skip).limit(pageSize);

  goodsModel.sort({ 'salePrice': sort });

  goodsModel.exec(function(err, doc) {
    if (err) {
      res.json({
        status: '1',
        msg: err.message
      })
    } else {
      res.json({
        status: '0',
        msg: '',
        result: {
          count: doc.length,
          list: doc
        }
      })
    }

  });
});

/*
    加入购物车
    POST
*/

router.post('/addCart', (req, res, next) => {

  let userId = req.cookies.userId,
    productId = req.body.params.productId;

  // 获取用户信息 包含购物车 订单信息
  User.findOne({ userId: userId }, (err, userDoc) => {
    if (err) {
      res.json({
        status: '1',
        msg: err.message
      })

    } else {
      // console.log("userDoc:" + userDoc)
      // 如果用户存在
      if (userDoc) {
        let goodsItem = '';

        // 判断 用户购物车是否存在 商品 
        userDoc.cartList.forEach((item) => {
          if (item.productId == productId) {
            goodsItem = item
            item.productNum++;
          }
        });

        if (goodsItem) {
          userDoc.save((cartErr, cartDoc) => {
            if (cartErr) {
              res.json({
                status: '1',
                msg: cartErr.message
              })

            } else {
              res.json({
                status: '0',
                msg: "",
                result: 'success'
              })
            }
          })
        } else {

          // 查询商品是否存在
          Goods.findOne({ productId: productId }, (goodErr, doc) => {
            if (goodErr) {
              res.json({
                status: '1',
                msg: goodErr.message
              })
            } else {
              if (doc) {
                // 添加 数量字段
                doc.productNum = 1; //添加购物车 默认 
                doc.checked = 1; // 默认为选中

                /*
                              将查询到的商品信息 加入到 用户购物车
    	         			*/
                userDoc.cartList.push(doc);
                userDoc.save((cartErr, cartDoc) => {
                  if (cartErr) {
                    res.json({
                      status: '1',
                      msg: cartErr.message
                    })

                  } else {
                    res.json({
                      status: '0',
                      msg: "",
                      result: 'success'
                    })
                  }
                })

              } else {
                res.json({
                  status: '1',
                  msg: "未查到商品信息"
                })
              }

            }

          })

        }

      } else {
        res.json({
          status: '1',
          msg: '用户不存在'
        })
      }




    }

  })

});

module.exports = router;
